package com.wyix.utils;


/**
 * 反射通用工具类（获取Class对象、打印类信息）
 */
public class ReflectionUtils {
    // 获取Class对象（支持类名/对象/包名三种方式）
    public static Class<?> getClazz(String className) throws ClassNotFoundException {
        return Class.forName(className);
    }

    public static Class<?> getClazz(Object obj) {
        return obj.getClass();
    }

    // 打印类的完整信息（包名、父类、接口）
    public static void printClassInfo(Class<?> clazz) {
        System.out.println("【类信息】");
        System.out.println("包名: " + clazz.getPackage().getName());
        System.out.println("父类: " + clazz.getSuperclass().getName());
        System.out.println("实现接口: " + String.join(", ", getInterfaceNames(clazz)));
    }

    private static String[] getInterfaceNames(Class<?> clazz) {
        return java.util.Arrays.stream(clazz.getInterfaces())
                .map(Class::getName)
                .toArray(String[]::new);
    }
}